const WebSocket = require('ws');

// 设置 WebSocket 服务器监听的端口
const port = 8080;
const wss = new WebSocket.Server({ port: port });

console.log(`[DEBUG] WebSocket 服务器正在尝试监听端口 ${port}`);

wss.on('connection', ws => {
  console.log('[DEBUG] 客户端已连接');

  // 接收到客户端消息时的处理
  ws.on('message', message => {
    console.log(`[DEBUG] 接收到客户端消息: ${message}`);

    // 将接收到的消息广播给所有连接的客户端 (包括发送者)
    wss.clients.forEach(client => {
      if (client.readyState === WebSocket.OPEN) {
        console.log(`[DEBUG] 正在向客户端发送广播消息: ${message}`);
        client.send(`服务器广播: ${message}`);
        console.log(`[DEBUG] 广播消息已发送给客户端`);
      } else {
        console.log('[DEBUG] 客户端未连接，无法发送广播消息');
      }
    });
  });

  // 客户端关闭连接时的处理
  ws.on('close', () => {
    console.log('[DEBUG] 客户端已断开连接');
  });

  // 连接发生错误时的处理
  ws.on('error', error => {
    console.error('[DEBUG] WebSocket 错误:', error);
  });

  // 向连接的客户端发送欢迎消息
  console.log('[DEBUG] 正在向新连接的客户端发送欢迎消息');
  ws.send('欢迎连接到 WebSocket 服务器！');
  console.log('[DEBUG] 欢迎消息已发送给客户端');
});

wss.on('error', error => {
  console.error('[DEBUG] 服务器错误:', error);
});

console.log('[DEBUG] WebSocket 服务器已启动');